package com.briup.corejava.day05;

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * 数组的综合案例
 * 使用方法的形式
 */
public class Test8 {
    /**
     * 求一个整形数组所有元素的最大值
     * @param arr 数组
     * @return 最大值
     */
    public static int getMax(int[] arr){
        // 默认数组中的第一个元素为当前最大值
        int max = arr[0];
        // 遍历从第二个元素开始
        for(int i=1;i<arr.length;i++){
            if(arr[i] > max){
                max = arr[i];
            }
        }
        return max;
    }

    /**
     * 反转数组
     * @param arr 数组
     * @return 反转后的数组
     */
    public static int[] reverse(int[] arr){
        // 循环次数只需要一半
        for(int i=0;i<arr.length/2;i++){
            // 交换位置 0 length-1 1 length-2
            arr[i] = arr[i] ^ arr[arr.length-1-i];
            arr[arr.length-1-i] = arr[i] ^ arr[arr.length-1-i];
            arr[i] = arr[i] ^ arr[arr.length-1-i];
            // 如果加入第三个变量
//            int a = arr[i];
//            arr[i] = arr[arr.length-1-i];
//            arr[arr.length-1-i] = a;
        }
        return arr;
    }

    public static void main(String[] args) {
        // 准备一个数组
        int[] arr = {14,25,24,11,4,7,31};
        // 调用方法并传参数
        int max = getMax(arr);
        System.out.println(max);
        int[] reverse = reverse(arr);
        System.out.println(Arrays.toString(reverse));
    }
}
